package com.tedu.api.socket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 服务器
 * 编写步骤:
 * 1.定义私有属性:ServerSocket【运行服务器端网络连接类】
 * 2.实现Server构造器 --- 实例化ServerSocket----申请端口号:6666
 * 3.实现start()方法 --- ①等待客户端链接②IO流
 * 4.构建主方法:创建Server对象,并且启动start
 */
public class Server {
    //1.定义私有属性:ServerSocket,申请端口号:6666
    private ServerSocket serverSocket;
    //2.实现Server构造器:传入1个参数：申请软件端口号：6666
    public Server() {
        try {
            serverSocket=new ServerSocket(6666);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //3.实现start()方法:等待客户端链接:accept()返回一个socket对象
    public void start() throws IOException {
        System.out.println(" ---- 等待客户端链接 ----- ");
        Socket socket=serverSocket.accept();//卡住 -- 等待客户端发起链接操作       System.out.println("一个客户端链接成功了");
        System.out.println("一个客户端链接成功了");

        //从客户端链接服务器端---链接成功--Socket对象【对话】
        InputStream is=socket.getInputStream();//读入
        //高级流--转换流：目的：指定字符集
        InputStreamReader isr= new InputStreamReader(is,"UTF8");
        //高级流--②缓冲流：目的：加速传输
         BufferedReader br=new BufferedReader(isr);

        //客户端--一直写出   服务器--一直读入
        //5.从服务器端一直读入文本
         String str=null; //5.1保存每次读入一行
          while (true){
            str=br.readLine();
            System.out.println("客户端说的话："+str);
        }
     }
    //4.构建主方法
     public static void main(String[] args) throws IOException {
//创建Server对象
         Server server=new Server();
          server.start();
    }
}